// pages/coupon/coupon.js
const app = getApp()

Page({
  data: {
    currentTab: 0, // 当前标签页：0-可使用，1-已使用，2-已过期
    coupons: [], // 优惠券列表
    loading: false, // 加载状态
    refreshing: false, // 刷新状态
    loadingMore: false, // 加载更多状态
    hasMore: true, // 是否还有更多数据
    page: 1, // 当前页码
    pageSize: 10, // 每页数量
    showCouponDetail: false, // 显示优惠券详情弹窗
    selectedCoupon: null // 选中的优惠券
  },

  onLoad(options) {
    // 如果从其他页面传入tab参数，设置对应的标签页
    if (options.tab) {
      this.setData({
        currentTab: parseInt(options.tab)
      })
    }
    this.loadCoupons()
  },

  onShow() {
    // 页面显示时刷新数据
    this.refreshCoupons()
  },

  onPullDownRefresh() {
    this.onRefresh()
  },

  onReachBottom() {
    this.loadMore()
  },

  // 切换标签页
  switchTab(e) {
    const tab = parseInt(e.currentTarget.dataset.tab)
    if (tab === this.data.currentTab) return
    
    this.setData({
      currentTab: tab,
      coupons: [],
      page: 1,
      hasMore: true
    })
    this.loadCoupons()
  },

  // 加载优惠券列表
  async loadCoupons(isLoadMore = false) {
    if (this.data.loading || this.data.loadingMore) return
    
    const loadingKey = isLoadMore ? 'loadingMore' : 'loading'
    this.setData({ [loadingKey]: true })
    
    try {
      const token = wx.getStorageSync('token')
      if (!token) {
        wx.showToast({
          title: '请先登录',
          icon: 'none'
        })
        setTimeout(() => {
          wx.navigateTo({
            url: '/pages/login/login'
          })
        }, 1500)
        return
      }

      // 根据当前标签页确定状态
      let status = ''
      switch (this.data.currentTab) {
        case 0:
          status = 'Available'
          break
        case 1:
          status = 'Used'
          break
        case 2:
          status = 'Expired'
          break
      }

      const response = await wx.request({
        url: `${app.globalData.apiBaseUrl}/user-coupons`,
        method: 'GET',
        header: {
          'Authorization': `Bearer ${token}`,
          'Content-Type': 'application/json'
        },
        data: {
          status: status,
          page: this.data.page,
          pageSize: this.data.pageSize
        }
      })

      if (response.statusCode === 200) {
        const { items, hasMore } = response.data
        
        // 格式化优惠券数据
        const formattedCoupons = items.map(item => ({
          ...item,
          coupon: {
            ...item.coupon,
            startTime: this.formatDateTime(item.coupon.startTime),
            endTime: this.formatDateTime(item.coupon.endTime)
          }
        }))
        
        this.setData({
          coupons: isLoadMore ? [...this.data.coupons, ...formattedCoupons] : formattedCoupons,
          hasMore: hasMore,
          page: isLoadMore ? this.data.page + 1 : this.data.page + 1
        })
      } else {
        wx.showToast({
          title: '加载失败',
          icon: 'none'
        })
      }
    } catch (error) {
      console.error('加载优惠券失败:', error)
      wx.showToast({
        title: '网络错误',
        icon: 'none'
      })
    } finally {
      this.setData({ 
        [loadingKey]: false,
        refreshing: false
      })
      wx.stopPullDownRefresh()
    }
  },

  // 刷新数据
  onRefresh() {
    this.setData({
      refreshing: true,
      page: 1,
      hasMore: true
    })
    this.loadCoupons()
  },

  // 刷新优惠券列表
  refreshCoupons() {
    this.setData({
      page: 1,
      hasMore: true
    })
    this.loadCoupons()
  },

  // 加载更多
  loadMore() {
    if (this.data.hasMore && !this.data.loadingMore) {
      this.loadCoupons(true)
    }
  },

  // 使用优惠券（显示详情）
  useCoupon(e) {
    const coupon = e.currentTarget.dataset.coupon
    this.setData({
      selectedCoupon: coupon,
      showCouponDetail: true
    })
  },

  // 关闭优惠券详情弹窗
  closeCouponDetail() {
    this.setData({
      showCouponDetail: false,
      selectedCoupon: null
    })
  },

  // 阻止事件冒泡
  stopPropagation() {
    // 空函数，用于阻止事件冒泡
  },

  // 去购物（使用优惠券）
  goToShopping() {
    this.closeCouponDetail()
    
    // 将选中的优惠券信息存储到全局数据中
    if (this.data.selectedCoupon) {
      app.globalData.selectedCoupon = this.data.selectedCoupon
    }
    
    // 跳转到首页或购物车
    wx.switchTab({
      url: '/pages/index/index'
    })
  },

  // 去领取优惠券
  goToGetCoupons() {
    // 跳转到领取优惠券页面
    wx.navigateTo({
      url: '/pages/coupon/get/get'
    })
  },

  // 格式化日期时间
  formatDateTime(dateTimeString) {
    if (!dateTimeString) return ''
    
    const date = new Date(dateTimeString)
    const year = date.getFullYear()
    const month = String(date.getMonth() + 1).padStart(2, '0')
    const day = String(date.getDate()).padStart(2, '0')
    const hours = String(date.getHours()).padStart(2, '0')
    const minutes = String(date.getMinutes()).padStart(2, '0')
    
    return `${year}-${month}-${day} ${hours}:${minutes}`
  },

  // 分享功能
  onShareAppMessage() {
    return {
      title: '优惠券中心 - 超多优惠等你来领',
      path: '/pages/coupon/coupon',
      imageUrl: '/images/share-coupon.jpg'
    }
  },

  onShareTimeline() {
    return {
      title: '优惠券中心 - 超多优惠等你来领',
      query: '',
      imageUrl: '/images/share-coupon.jpg'
    }
  }
})